home *** CD-ROM | disk | FTP | other *** search
/ Chip: 2005 Utilities / CHIP Utilities 2005.7z / CHIP Utilities 2005.iso / images / freesco.igz / freesco.img / router / rc / rc_dhcpd < prev    next >
Encoding:
Text File  |  2003-05-20  |  1.7 KB  |  74 lines

  1. #!/bin/sh
  2. #
  3. # Start/stop DHCP service
  4.  
  5. . /etc/system.cfg
  6. . /etc/colors
  7. . /etc/chat.pwd
  8. . /etc/live.cfg
  9.  
  10.  
  11. fn2()    { ps | sed -n '/    dhcpd/P'; }
  12. stp()    {
  13.     [ "`fn2`" ] || return
  14.     echo -n "Stopping dhcpd...            "
  15.     killall dhcpd -15
  16.     sleep 2
  17.     killall dhcpd
  18.     =
  19. }
  20. fn1()    {
  21.     eval a='$'INTNAME$1 b='$'BRDCAST$1 c='$'NETWORK$1
  22.     eval d='$'NETMASK$1 e='$'IPRANGE$1 f='$'IPADDR$1
  23.     [ "$a" -a "$b" -a "$c" -a "$d" -a "$e" -a "$f" ] || return
  24.     [ "`ifconfig $a 2>/dev/null | sed -n /UP/P`" ] || return
  25.     INT="$INT $a"
  26.     cat >>/etc/dhcpd.conf <<-EOF
  27.         subnet $c netmask $d {
  28.         range $e;
  29.         option subnet-mask $d;
  30.         option broadcast-address $b;
  31.         option routers $f;
  32.     EOF
  33.     [ "$ENADNS" = n ] && f="$DNSADDR"
  34.     [ "$DNSADDR1" ] && f="$f,$DNSADDR1"
  35.     echo "option domain-name-servers $f;" >>/etc/dhcpd.conf
  36.     echo "}" >>/etc/dhcpd.conf
  37. }
  38. str()    {
  39.     [ "$ENADHCP" = n -o "`fn2`" ] && return
  40.     set -- `echo $LIZTIME | sed s/,/\ /g`
  41.     cat >/etc/dhcpd.conf <<-EOF
  42.         option domain-name "$DOMAIN";
  43.         default-lease-time ${1:-345600};
  44.         max-lease-time ${2:-345600};
  45.  
  46.     EOF
  47.     [ "$WINSADDR" ] && cat >>/etc/dhcpd.conf <<-EOF
  48.         option netbios-name-servers $WINSADDR;
  49.         option netbios-dd-server $WINSADDR;
  50.         option netbios-node-type 8;
  51.  
  52.     EOF
  53.     [ "$USEDHCP0" = n ] && fn1 0
  54.     for i in 1 2 3 4 5 6 7 8 9; do fn1 $i; done
  55.     cat /boot/etc/dhcp.cfg 2>/dev/null | sed '/^#.*$/d' >>/etc/dhcpd.conf
  56.     [ "$INT" ] || return 2
  57.     INT=`echo $INT | sed s/:.//g`
  58.     [ "$BOOTMOD" = debug -o "$LOGDHCP" = y ] && DBG="-d"
  59.     echo -n "Starting dhcpd...            $CR"
  60.     dhcpd -q $INT 
  61.     chmod 644 /etc/dhcpd.leases
  62.     = $? "Done $CC $INT"
  63. }
  64.  
  65. case "$1" in
  66.     start)    str;;
  67.     stop)    stp;;
  68.     restart|newip) stp;str;;
  69.     status)    if [ "`fn2`" ]
  70.             then echo "Running dhcpd:"; fn2
  71.             else echo No running dhcpd
  72.         fi;;
  73. esac
  74.